package com.csii.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;

import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Value;

/**
 * <p>
 * 
 * </p>
 *
 * @author ian
 * @since 2020-07-09
 */
@Data
@TableName("oauth_client_details")
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="oauth_client_details", description="oauth_client_details")
public class OauthClientDetails implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用于唯一标识每一个客户端(client)
     */
    @ApiModelProperty(value="clientId")
    @TableId(value = "client_id", type = IdType.ASSIGN_ID)
    private String clientId;

    /**
     * 客户端能访问的资源id集合，注册客户端时，根据实际需要可选择资源id，也可以根据不同的额注册流程，赋予对应的额资源id
     */
    @ApiModelProperty(value="客户端能访问的资源id集合，注册客户端时，根据实际需要可选择资源id，也可以根据不同的额注册流程，赋予对应的额资源id")
    private String resourceIds;

    /**
     * 用于指定客户端(client)的访问密匙
     */
    @ApiModelProperty(value="用于指定客户端(client)的访问密匙")
    private String clientSecret;

    /**
     * 指定客户端申请的权限范围
     */
    @ApiModelProperty(value="指定客户端申请的权限范围")
    private String scope;

    /**
     * 指定客户端支持的grant_type
     */
    @ApiModelProperty(value="指定客户端支持的grant_type")
    private String authorizedGrantTypes;

    /**
     * 客户端的重定向URI
     */
    @ApiModelProperty(value="客户端的重定向URI")
    private String webServerRedirectUri;

    /**
     * 指定客户端所拥有的Spring Security的权限值
     */
    @ApiModelProperty(value="指定客户端所拥有的Spring Security的权限值")
    private String authorities;

    /**
     * 设定客户端的access_token的有效时间值(单位:秒)
     */
    @ApiModelProperty(value="设定客户端的access_token的有效时间值(单位:秒)")
    private Integer accessTokenValidity;

    /**
     * 设定客户端的refresh_token的有效时间值(单位:秒)
     */
    @ApiModelProperty(value="设定客户端的refresh_token的有效时间值(单位:秒)")
    private Integer refreshTokenValidity;

    /**
     * 预留的字段,在Oauth的流程中没有实际的使用,值必须是json格式
     */
    @ApiModelProperty(value="预留的字段,在Oauth的流程中没有实际的使用,值必须是json格式")
    private String additionalInformation;

    /**
     * 默认false,适用于authorization_code模式,设置用户是否自动approval操作,设置true跳过用户确认授权操作页面，直接跳到redirect_uri
     */
    @ApiModelProperty(value="默认false,适用于authorization_code模式,设置用户是否自动approval操作,设置true跳过用户确认授权操作页面，直接跳到redirect_uri")
    private String autoapprove;

    /**
     * 客户端描述
     */
    @ApiModelProperty(value = "客户端描述")
    private String clientDesc;

    /**
     * 项目首页
     */
    @ApiModelProperty(value = "项目首页")
    private String homePage;
}
